apache+tomcat实现集群和负载均衡

apache+tomcat实现集群和负载均衡

十月 24, 2018 本文总阅读量

下载apache和tomcat

Apache 2.2.15+mod_jk-1.2.30-httpd-2.2.3.so 下载地址
tomcat下载地址

安装apache和tomcat

1. 双击 httpd-2.2.15-win32-x86-no_ssl.msi文件进行安装到D:\Apache Software Foundation\就好了,后面填写自己域名可以随便填。
2. 2个tomcat也解压到同一个目录

将其中的一个占用的端口号前面全部加1,另外一个占用的端口前面全部加2

3. 配置apache
  1. 取出下载的mod_jk-1.2.30-httpd-2.2.3.so。将其放置到Apache2.2\modules目录下
  2. 打开Apache2.2\conf\ httpd.conf文件。在其末尾添加上一行:
1
2
include "D:\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"
即调用conf目录下的mod_jk.conf这个配置文件。当然,apache conf目录下原来是没有这个文件的。我们需要自己新建这个文件。
  1. 在conf目录下新建Mod_jk.conf内容如下:
1
2
3
4
5
6
7
8
9
10
11
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.30-httpd-2.2.3.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
  1. 接着,我们在conf目录下新建workers.properties内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13 #定向包协议
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
worker.tomcat1.redirect = tomcat2
#========tomcat2========
worker.tomcat2.port=18009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13 #定向包协议
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
worker.tomcat2.redirect = tomcat1
worker.tomcat2.activation = disabled # 这句配置的意思是,负载均衡启动的时候,其实负载都到tomcat1上面去
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1
4. Tomcat集群配置
  1. 修改集群设置在,Engine标签或Host标签元素下添加以下内容均可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="224.0.0.1"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
  1. 修改Engine标签的属性。
    在这里插入图片描述

2个tomcat, jvmRoute分别配置成tomcat1和tomcat2,即和apache/conf里worker.properites配置文件中配置的worker名称对应。

  1. 修改本项目的web.xml,添加
    1
    <Context distributable="true" /><Context distributable="true" />

在这里插入图片描述

4. 启动tomcat发现运行 浏览器访问locahost 发现运行正常